import { isNullOrUndef } from '@/utils/is';
import { toLogin } from '@/utils/auth';
import {} from '@/utils/cache/';
import { getToken, removeToken } from '@/utils/token';

export async function checkStatus(error) {
	let { code, msg } = error.response?.data || {};
	if (isNullOrUndef(code)) {
		// 未知错误
		code = -1;
		if (error.message === 'canceled') {
			msg = 'canceled';
		} else {
			msg = '接口异常！';
		}
	} else {
		/**
		 * TODO 此处可以根据后端返回的错误码自定义框架层面的错误处理
		 */
		switch (code) {
			case 400:
				msg = msg || '请求参数错误';
				break;
			case 401:
				msg = msg || '登录已过期';
				if (getToken()) {
					await removeToken();
					toLogin();
					// $dialog.alert(msg, function () {

					// });
				} else {
					toLogin();
				}
				break;
			case 403:
				msg = msg || '没有权限';
				break;
			case 404:
				msg = msg || '资源或接口不存在';
				break;
			default:
				msg = msg || '未知异常';
				break;
		}
	}
	console.error(`【${code}】 ${error}`);
	return Promise.resolve({ code, msg, error });
}

/**
 *  检查无效用户
 * @param {*} response
 * @returns
 */
export async function checkInvalidStatus(data) {
	let { code, msg } = data || {};
	if (code == 401 && getToken()) {
		await removeToken();
		toLogin();
		// $dialog.alert(msg, function () {

		// });
	} else {
		return data;
	}
}
